package com.aries.ui.util;

import java.lang.reflect.Method;

/**
 * @Author: AriesHoo on 2018/7/19 9:49
 * @E-Mail: AriesHoo@126.com
 * Function:手机ROM工具类-主要国产手机:通过SystemProperties系统属性获取
 * Description:
 * 1、新增是否为某个手机方法新增OPPO/VIVO/SMARTISAN/360 ROM方法
 */
public class RomUtil {
    private static final String KEY_EMUI_VERSION_NAME = "ro.build.version.emui";


    /**
     * 判断是否为EMUI
     *
     * @return 否为EMUI
     */
    public static boolean isEMUI() {
        return isRom(KEY_EMUI_VERSION_NAME);
    }


    /**
     * 获取EMUI的版本
     *
     * @return 获取EMUI的版本
     */
    public static String getEMUIVersion() {
        return getSystemProperty(KEY_EMUI_VERSION_NAME);
    }


    /**
     * 根据  **.os.SystemProperties是否有某个手机系统版本key来判断是否存在来判断是否有某个ROM
     *
     * @param key key
     * @return 机系统版本key
     */
    public static boolean isRom(String key) {
        String property = getSystemProperty(key);
        return !(property == null || "".equals(property));
    }

    /**
     * 通过反射获取系统属性
     *
     * @param key key
     * @param defaultValue defaultValue
     * @return  反射获取系统属性
     */
    public static String getSystemProperty(String key, String defaultValue) {
        String result = defaultValue;
        try {
            Class<?> clz = Class.forName("android.os.SystemProperties");
            Method get = clz.getMethod("get", String.class, String.class);
            result = (String) get.invoke(clz, key, defaultValue);
        } catch (Exception ignored) {
        }
        return result;
    }

    public static String getSystemProperty(String key) {
        return getSystemProperty(key, "");
    }
}
